package com.wsoft.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.wsoft.entity.TsJobEntity;
import com.wsoft.query.job.*;
import com.wsoft.vo.JobVO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 定时任务表 服务类
 * </p>
 *
 * @author z001
 * @since 2024年10月23日 08:16:34
 */
public interface ITsJobService extends IService<TsJobEntity> {

    /**
     * 新增任务
     * @param query
     * @return
     */
    boolean insertJob(JobInsertQuery query);

    /**
     * 修改任务
     * @param query
     * @return
     */
    boolean updateJob(JobUpdateQuery query);

    /**
     * 查询任务列表
     * @param query
     * @return
     */
    PageInfo<JobVO> listJob(JobListQuery query);

    /**
     * 获取任务详情
     * @param id
     * @return
     */
    JobVO getJobInfo(Long id);

    /**
     * 删除job
     * @param id
     * @return
     */
    boolean deleteJob(Long id);

    /**
     * 修改job状态
     * @param query
     * @return
     */
    boolean updateStatus(JobUpdateQuery query);

    /**
     *  执行一次
     *  不管是在进行还是暂停状态下
     * @param query
     * @return
     */
    boolean executeJobOne(JobExecutorQuery query);

    /**
     * 获取corn下次执行的时间
     * @param query
     * @return
     */
    List<LocalDateTime> nextExecute(JobNextExecutorQuery query);
}
